package com.ldu.houserent.controller.front;

import com.ldu.houserent.common.base.BaseController;
import com.ldu.houserent.common.constant.Constant;
import com.ldu.houserent.common.dto.JsonResult;
import com.ldu.houserent.common.enums.UserStatusEnum;
import com.ldu.houserent.entity.User;
import com.ldu.houserent.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpSession;

/**
 * 登录相关的控制器
 */
@Controller
@RequestMapping("/login")
public class LoginController extends BaseController {

    @Autowired
    private UserService userService;    //实例化UserService

    /**
     * 登录提交
     */
    @RequestMapping(value = "/submit",method = RequestMethod.POST)
    @ResponseBody               //返回一个Json结构，而不是一个地址
    public JsonResult loginSubmit(User user, HttpSession session) {
        //判断user是否为空
        if (user==null){    //用户名为空
            return JsonResult.error("用户名不能为空");
        }
        User user1=userService.findByUserName(user.getUserName());
        if (user1==null){   //在数据库中没有查到该用户名，说明该用户不存在
            return JsonResult.error("用户不存在");
        }
        //判断密码是否正确
        if (!user.getUserPass().equals(user1.getUserPass())){       //输入的密码与在数据库中查到的密码不一样
            return JsonResult.error("密码输入有误，请联系管理员找回");
        }
        //获取到禁用的值，如果数据库中查到的状态值与禁用值相等，则不允许登录
       if (UserStatusEnum.DISABLE.getValue().equals(user1.getStatus())){
           return JsonResult.error("当前用户已被禁用，请联系管理员");
       }
        session.setAttribute(Constant.SESSION_USER_KEY,user1);       //把用户user信息放到session中，实现登录
        return JsonResult.success("登录成功");
    }

    /**
     * 退出登录，返回首页
     */
    @RequestMapping("logout")
    public String logout(HttpSession session){
        //清理session以清除网页端的用户信息
        session.removeAttribute(Constant.SESSION_USER_KEY);
        session.invalidate();
        return "redirect:/";    //重定向
    }

}
